#/bin/bash

#junchao_zhao@yeah.net
#说明：
#	每个用户在自己家根目录创建backup_list.conf文件，以家目录为参考，每行指定一个需要备份的目录
#	如：	.
#		./work
#		./code/c_code
#	备份后的文件保存在 /bak 目录

ROOT_DIR=/a-boat/bak

if test -d $ROOT_DIR
then
		echo "check dir "$ROOT_DIR" ok"
else
		mkdir $ROOT_DIR
fi

WORK_DIR=home_bak_$(date +%Y%m%d-%H%M)

HOME_DIR=$(ls /home/)

mkdir "$ROOT_DIR""/$WORK_DIR"

echo "mkdir""$ROOT_DIR""/$WORK_DIR"


#压缩每个用户
for dir in $HOME_DIR
do
	USER_DIR="/home"/$dir

	USER_LIST="/home/"$dir/"backup_list.conf"
	
	if test -e $USER_LIST	#检查用户是否有backup list文件
	then
		cd $USER_DIR	
		BACKUP_DIR=$(cat $USER_LIST)
		
		for bak in $BACKUP_DIR
		do
			if test -e $bak  #检查待备份文件是否存在
			then
				USER_TAR=$ROOT_DIR"/"$WORK_DIR"/"$dir"_bak.tar"
				echo "tar:" $bak "to: "$USER_TAR
				tar -rf  $USER_TAR $bak
			else
				echo "No such file: "$bak
			fi
		done
	else
		echo "NO backup config file in: "$dir
	fi

done

#开始整合包
cd $ROOT_DIR

ALL_PACK="$WORK_DIR"".tar"
echo "all pack:$ALL_PACK"

tar -vczf $ALL_PACK   $WORK_DIR
#tar -vczf $ALL_PACK  ./* --exclude=home_bak_*

#清除各用户的包

rm $WORK_DIR -rf


#需要使用 chattr -i 文件名 解锁后方可删除文件
chattr +i $ALL_PACK


